package com.psdi.element;

/**
 * 变换类
 * 用于表示游戏中元素的位置、旋转和大小
 * 包含位置、旋转和尺寸三个属性
 * 提供一系列方法来计算变换之间的距离和中心点位置
 */
public class Transform {
    public Position position;
    public Rotation rotation;
    public Size size;
    public Transform(Position position, Rotation rotation, Size size) {
        this.position = position;
        this.rotation = rotation;
        this.size = size;
    }
    public Transform() {
        this.position = new Position(0, 0);
        this.rotation = new Rotation();
        this.size = new Size(1, 1);
    }
    public static double distance(Transform t1, Transform t2) {
        return Position.distance(t1.position, t2.position);
    }

    /**
     * 计算并返回当前变换的中心点位置。
     * 中心点通过将宽度的一半和高度的一半分别加到当前位置的 x 和 y 坐标上来计算。
     *
     * @return 一个包含中心点坐标的 Position 对象。
     */
    public Position center() {
        return new Position(position.x + size.width / 2.0f, position.y + size.height / 2.0f);
    }
}
